package com.hsu.yuapiinterface.controller;

import com.hsu.yuapiclientsdk.model.User;
import com.hsu.yuapiclientsdk.utils.SignUtils;
import org.springframework.web.bind.annotation.*;

import javax.servlet.http.HttpServletRequest;

/**
 * 名称 API
 * @ClassName: NameController
 * @author Hsu琛君珩
 * @date 2024-08-15
 * @apiNote
 * @Version: v1.0
 */
@RestController
@RequestMapping("/name")
public class NameController {

    @GetMapping("/get")
    public String getNameByGet(String name, HttpServletRequest request) {
        // 获取请求头名为 "hsu" 的值
        System.out.println(request.getHeader("hsu"));
        return "GET 你的名字是" + name;
    }

    @PostMapping("/post")
    public String getNameByPost(@RequestParam String name) {
        return "POST 你的名字是" + name;
    }

    @PostMapping("/user")
    public String getUserNameByPost(@RequestBody User user, HttpServletRequest request) {
//        // 从请求头中获取参数
//        String accessKey = request.getHeader("accessKey");
//        String nonce = request.getHeader("nonce");
//        String timestamp = request.getHeader("timestamp");
//        String sign = request.getHeader("sign");
//        String body = request.getHeader("body");
//        // 不能直接获取密钥
////        String secretKey = request.getHeader("secretKey");
//        // 校验权限，这里直接模拟
//        // todo 实际应该查询数据库验证权限，看是否已经分配给用户了
//        if (!accessKey.equals("hsu")) {
//            throw new RuntimeException("无权限");
//        }
//        // 校验随机数，因为可以带到后端存储，通过HashMap或者Redis存储
//        if (Long.parseLong(nonce) > 10000) {
//            throw new RuntimeException("无权限");
//        }
//        // todo 校验时间戳与当前时间的差距
////        if () {}
//        // todo 实际应该从数据库中查询出secretKey
//        String serverSign = SignUtils.genSign(body, "abcdefgh");
//        // 校验body
//        if (!sign.equals(serverSign)) {
//            throw new RuntimeException("无权限");
//        }
        String result = "POST 用户名字是" + user.getUsername();
        return result;
    }
}
